﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using DTO;
using BUS;

namespace QLVBDQ
{
    /// <summary>
    /// Interaction logic for ThongTinSanPham.xaml
    /// </summary>
    public partial class ThongTinSanPham : UserControl
    {
        public ThongTinSanPham()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Bắt sự kiện thay đổi listSP
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listSanPham_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (listSanPham.SelectedIndex != -1)
            {
                SanPham_DTO item = (SanPham_DTO)listSanPham.SelectedItem;

                maSP.Text = item.MaSanPham.Trim(' ');
                tenSP.Text = item.TenSanPham.Trim(' ');
                soLuong.Text = item.SoLuongTon.ToString();
                donGia.Text = item.DonGia.ToString();
                for (int i = 0; i < loaiSP.Items.Count; i++)
                {
                    if (((LoaiSanPham_DTO)loaiSP.Items[i]).MaLoaiSanPham == item.LoaiSP.MaLoaiSanPham)
                    {
                        loaiSP.SelectedIndex = i;
                        break;
                    }
                }
            }
            else
            {
                maSP.Text = String.Empty;
                tenSP.Text = String.Empty;
                soLuong.Text = String.Empty;
                donGia.Text = String.Empty;
            }
        }


        /// <summary>
        /// Load danh sách sản phẩm vào list
        /// </summary>
        void LoadDSSanPham()
        {
            listSanPham.Items.Clear();
            List<SanPham_DTO> list = SanPham_BUS.Instance.LayToanBoSanPham();
            if (list==null)
            {
                return;
            }
            for (int i = 0; i < list.Count; i++)
            {
                list[i].STT = i + 1;
                listSanPham.Items.Add(list[i]);
            }
        }

        /// <summary>
        /// Load DS Loại sản phẩm vào combobox
        /// </summary>
        void LoadDSLoaiSP()
        {
            loaiSP.Items.Clear();
            List<LoaiSanPham_DTO> list = LoaiSanPham_BUS.Instance.LayToanBoLoaiSP();
            if (list==null)
            {
                return;
            }
            for (int i = 0; i < list.Count; i++)
            {
                loaiSP.Items.Add(list[i]);
            }
        }

        /// <summary>
        /// Xóa sản phẩm
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void butXoa_Click(object sender, RoutedEventArgs e)
        {
            SanPham_DTO item = (SanPham_DTO)listSanPham.SelectedItem;
            if (item == null)
            {
                MessageBox.Show("Thông báo: Chọn sản phẩm để xóa");
                return;
            }
            //
            // Xóa ngay và luôn
            if (MessageBox.Show("Cảnh báo: Bạn có muốn xóa thực sự", "Cảnh báo", MessageBoxButton.YesNo) == MessageBoxResult.No)
                return;
            if (!SanPham_BUS.Instance.XoaSanPham(item))
            {
                MessageBox.Show("Lỗi: Khổng thể xóa sản phẩm");
                return;
            }
            else
            {
                listSanPham.Items.Remove(item);
                MessageBox.Show("Xóa thông tin sản phẩm thành công");
            }
        }

        /// <summary>
        /// Sửa sản phẩm
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void butSua_Click(object sender, RoutedEventArgs e)
        {
            SanPham_DTO item = (SanPham_DTO)listSanPham.SelectedItem;
            if (item == null)
            {
                MessageBox.Show("Thông báo: Chọn sản phẩm để chỉnh sửa");
                return;
            }
            // Sửa thông tin trong bảng
            item.TenSanPham = tenSP.Text;
            item.DonGia = long.Parse(donGia.Text);
            item.SoLuongTon = Int32.Parse(soLuong.Text);
            item.LoaiSP = LoaiSanPham_BUS.Instance.LayLoaiSP(((LoaiSanPham_DTO)loaiSP.SelectedItem).MaLoaiSanPham);
            listSanPham.Items.Refresh();
            // Sua thong tin trong sql
            if (!SanPham_BUS.Instance.CapNhatSanPham(item))
                MessageBox.Show("Lỗi: Khổng thể chỉnh sửa thông tin sản phẩm");
            else
                MessageBox.Show("Chỉnh sữa thông tin thành công");
        }

        /// <summary>
        /// Thêm sản phẩm mới
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void butThem_Click(object sender, RoutedEventArgs e)
        {
            if (MessageBox.Show("Bạn muốn thêm sản phẩm vừa nhập?", "Thông Tin", MessageBoxButton.OK) == MessageBoxResult.OK)
            {
                SanPham_DTO kh = new SanPham_DTO("---", tenSP.Text, ((LoaiSanPham_DTO)loaiSP.SelectedItem).MaLoaiSanPham,
                    ((LoaiSanPham_DTO)loaiSP.SelectedItem).TenLoaiSanPham, long.Parse(donGia.Text), Int32.Parse(soLuong.Text));

                if (!SanPham_BUS.Instance.ThemSanPham(kh))
                {
                    MessageBox.Show("Thêm không thành công!");
                    return;
                }
                else
                {
                    MessageBox.Show("Thêm Thành Công!");
                    this.listSanPham.Items.Clear();
                    LoadDSSanPham();
                    this.maSP.Text = string.Empty;
                    this.tenSP.Text = string.Empty;
                    this.soLuong.Text = string.Empty;
                    this.donGia.Text = string.Empty;
                    loaiSP.SelectedItem = -1;
                    tenSP.Focus();
                }
            }
        }

        private void UserControl_Loaded_1(object sender, EventArgs e)
        {
            LoadDSLoaiSP();
            LoadDSSanPham();
        }
    }
}
